<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
<head>
<link rel="Stylesheet" type="text/css" href="css/style.css" />
<title>script_1238_mark</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <div id="contents">

<h1 id="toc_1"><a href="http://www.vim.org/scripts/script.php?script_id=1238">Mark : 用不同颜色同时高亮几个不同的词</a></h1>

<p>
作者：<a href="http://www.vim.org/account/profile.php?user_id=7148">Yuheng Xie</a>
</p>

<p>
脚本类型：公用(utility)
</p>

<h2 id="toc_1.1">描述</h2>
<p>
这个脚本用来同时为几个词显示不同的颜色。例如，当浏览很大的程序文件时，
你希望高亮一些变量，来方便跟踪源码。
</p>

<p>
我觉得这个脚本在功能上有点跟 MultipleSearch <a href="http://www.vim.org/scripts/script.php?script_id=479">#479</a> 相似。
</p>

<h2 id="toc_1.2">用法</h2>
<ul>
<li>
高亮：
</li>
<ul>
<li>
普通模式：
</li>
<ul>
<li>
<code>\m</code> 标记或取消标记光标所在（或之前）的单词。
            光标下的单词将被高亮，按 \m 键，这个单词会被着色。
</li>
<li>
<code>\r</code> 手动输入正则表达式
            输入 \r 和正则表达式，将高亮任意正则。
</li>
<li>
<code>\n</code> 清除光标下，或全部的标记。
</li>
</ul>
<li>
可视模式：
</li>
<ul>
<li>
<code>\m</code> 标记或取消标记一个选区
            在可视模式下选中一些文本，按 \m 键，则选中的文本被着色。
</li>
<li>
<code>\r</code> 手动输入正则表达式（基于选中的文本）
</li>
</ul>
<li>
命令模式：
</li>
<ul>
<li>
<code>:Mark 正则表达式</code> 标记一个正则表达式。
</li>
<li>
<code>:Mark 正则表达式</code> 如果已标记，则取消标记这个表达式。
</li>
<li>
<code>:Mark</code> 清除所有标记。
</li>
</ul>
</ul>
<li>
搜索：
</li>
<ul>
<li>
普通模式：
</li>
<ul>
<li>
# * \* \# \/ \? 使用这 6 个键跳转到其他标记。
        并且可以使用 Vim 的 / 和 ? 进行搜索，自从标记模式添加到搜索历史。
</li>
</ul>
</ul>
</ul>

<p>
这是 * # \* \# \/ \? 的一个sumerization(?)
</p>
<pre>
" 首先，\#，\? 和 # 的行为与 \* \/ 和 * 相似，只是前者是反向搜索。
"
" \*，\/ 和 * 的不同之处在于它们不考虑当前光标下是否有一个有效的标记：
"
"    光标在标记之上                         光标不在标记之上
" ---------------------------------------------------------------------------
" \* 跳转到下一个出现的（与当前相同标记     跳转到下一个（与最后的标记相同的）
"    相同的单词）并把它当作最后的标记。     单词
"
" \/ 跳转到下一个任意的标记。               同左
"
" *  如果 \* 是最近使用的，在执行一次       执行 Vim 的 * 的原生动作。
"    \*；否则（\/ 是最近使用的），做
"    一次 V。
</pre>

<p>
截图：
<img src="http://elephant.net.cn/files/vim_screenshot.png" /> （也可以看我的主题截图 <a href="http://www.vim.org/scripts/script.php?script_id=1253">vimscript#1253</a>）
</p>

<p>
Bug 及备注：
有一些单词会被着色但不被高亮。
</p>

<p>
mark.vim 在改变外观主题之后，需要被重新加载，例如，如果如下设置：
</p>
<pre>
:set background=dark
" 或者
:colorscheme default
</pre>
<p>
之后，需要
</p>
<pre>
:source PATH_OF_PLUGINS/mark.vim
</pre>
<p>
否则不会看到改变。
</p>

<p>
不幸的是，似乎 .gvimrc 在插件(plugin)之后执行，所以在 .gvimrc 的颜色设置，
你最好在 .gvimrc 的最后加一行引用(source) mark.vim 的代码。
</p>

<h2 id="toc_1.3">安装细节</h2>
<p>
将 mark.vim 放置在 plugin 目录中，重启 Vim。
</p>

<p>
如果希望自定义 &lt;leader&gt; 键（默认是 \），可以在 .vimrc 中设置：
</p>
<pre>
let mapleader = ","
</pre>
<p>
此时 <code>,m</code> <code>,r</code> <code>,n</code> 会替换 <code>\m</code> <code>\r</code> <code>\n</code> 为触发键。
</p>

<p>
如果在 .gvimrc 中设置了颜色(color)，最后在 .gvimrc 的最后加上：
</p>
<pre>
source PATH_OF_PLUGINS/mark.vim
</pre>

<p>
如果希望更多不同的颜色(color)，你可以在 vimrc 文件中定义MarkWord1-6,7,8...
只需要注意是否有下面这样的行：
</p>
<pre>
colorscheme xxx
set background=dark
</pre>
<p>
基于同样的原因，需要在设置颜色之后重新引用。
</p>
    </div>
    <div id="footer">
        Copyleft &copy; 2009-2010 <a href="http://code.google.com/p/vim-script-cn/">Vim Script 文档中文团队</a>.
    </div>
</body>
</html>
